Jpegoptim — узкая консольная утилита для оптимизации JPEG/JFIF-файлов. Она не заменяет фоторедактор, не работает как каталогизатор изображений и не предназначена для ретуши. Её задача — уменьшить размер JPEG-файла за счёт оптимизации кодирования, удаления выбранных метаданных и, при необходимости, повторного сохранения с ограничением качества или целевого размера. Программа запускается из терминала командой jpegoptim, принимает параметры и пути к файлам, после чего выводит результат обработки строкой с размером изображения, маркерами, статусом и количеством сэкономленных байтов.
Основной сценарий Jpegoptim — оптимизация JPEG для сайта, каталога товаров, фотогалереи, блога, документации или архива, где важен размер файлов. Утилита хорошо вписывается в рабочие процессы, где изображения проходят через скрипт: экспорт из редактора, проверка каталога перед публикацией, обработка пользовательских загрузок, подготовка ассетов для репозитория. В отличие от онлайн-компрессоров, Jpegoptim работает локально: файлы не отправляются в браузерный сервис, а обработка выполняется в файловой системе пользователя или сервера.
Jpegoptim поддерживает два принципиально разных подхода. В режиме без принудительного ограничения качества программа оптимизирует JPEG без понижения качества изображения, используя оптимизацию Huffman tables. В режиме с параметром --max= или --size= включается сжатие с потерями: программа может переупаковать изображение с более низким качеством, чтобы уменьшить размер файла. Это важное различие: одна команда подходит для аккуратного уменьшения веса уже готовых JPEG, другая — для ситуаций, где размер файла важнее сохранения исходного уровня компрессии.
Для каких задач нужен Jpegoptim
Jpegoptim полезен там, где нужно обрабатывать именно JPEG/JFIF, а не весь набор графических форматов. Он не сжимает PNG, SVG, WebP, AVIF, TIFF или RAW. Для PNG логичнее использовать OptiPNG, pngcrush или другой профильный инструмент; для универсальной пакетной обработки можно выбрать графические программы вроде XnView MP, Converseen, GIMP, IrfanView или FastStone Image Viewer. Jpegoptim выигрывает в другом: он прост для автоматизации, не требует окна приложения и стабильно выполняет одну техническую задачу.
Программа подходит для подготовки изображений перед публикацией на сайте. JPEG-файлы часто занимают больше места из-за неэффективных таблиц Хаффмана, встроенных миниатюр, EXIF, XMP, ICC-профилей, комментариев и других маркеров. Jpegoptim позволяет оставить метаданные, удалить их полностью или удалить только выбранные блоки. Для сайта это означает, что можно отдельно решить, что важнее: минимальный вес файла, сохранение цветового профиля, сохранение авторских данных, сохранение даты съёмки или очистка приватной информации.
Вторая типичная задача — пакетное сжатие JPG. Программа принимает несколько файлов за один запуск: jpegoptim *.jpg, jpegoptim photo1.jpg photo2.jpg photo3.jpg, а также списки через --files-from= и --files-stdin. Это удобно для каталогов с товарами, галерей, экспортированных подборок и статических ресурсов сайта. В версиях линейки 1.5 добавлена параллельная обработка через --workers=, поэтому большие наборы файлов можно распределять между несколькими рабочими процессами.
Третья задача — подготовка файлов под ограничение размера. Команда jpegoptim --size=100k photo.jpg пытается приблизить файл к указанному размеру в килобайтах, а jpegoptim --size=50% photo.jpg — к проценту от исходного размера. Такой режим нужен для аватаров, вложений, форм загрузки, личных кабинетов и CMS, где установлен предел на размер изображения. Параметр --size отключает режим оптимизации без потерь, поэтому его используют только после понимания компромисса между весом файла и качеством картинки.
Кому подходит Jpegoptim
Веб-разработчикам и администраторам сайтов
Веб-разработчик использует Jpegoptim как часть цепочки подготовки изображений. Утилита может работать после экспорта из Photoshop, Lightroom, GIMP, Figma, CMS или генератора статического сайта. Команда легко встраивается в shell-скрипт, Makefile, npm-script, CI/CD-пайплайн или задачу cron.
Для каталога сайта рабочий процесс выглядит так:
jpegoptim --max=85 --strip-all --all-progressive assets/images/*.jpgКоманда ограничивает качество сверху, удаляет метаданные и переводит файлы в progressive JPEG. Для контентного сайта такой сценарий уменьшает размер фотографий и убирает лишние блоки, которые не нужны посетителю страницы. Для изображений, где важен ICC-профиль, команда меняется:
jpegoptim --max=85 --strip-all --keep-icc assets/images/*.jpgТакой вариант оставляет цветовой профиль, но удаляет остальные маркеры, которые не нужны при публикации.
Linux-пользователям и системным администраторам
В Linux Jpegoptim особенно удобен: программа запускается из терминала, поддерживает пакетную обработку и не требует графического окружения. Её можно применять на рабочей станции, сервере, VPS, в контейнере или внутри скрипта обслуживания медиакаталога.
Для администратора важны три особенности:
программа не требует интерактивного интерфейса;
параметры явно задаются в команде;
вывод можно использовать для контроля результата.
Пример для каталога пользовательских загрузок:
find /var/www/site/uploads -type f \( -name "*.jpg" -o -name "*.jpeg" \) \ -exec jpegoptim --max=85 --strip-all --preserve {} +Параметр --preserve сохраняет время изменения файла. Это важно, когда дата файла используется CMS, системой резервного копирования или скриптом синхронизации.
Контент-менеджерам и редакторам сайтов
Контент-менеджеру Jpegoptim подходит, когда обработка изображений повторяется каждый день и её можно свести к готовой команде. Визуальной оценки результата программа не даёт, но зато убирает ручной цикл: открыть файл, сохранить для web, повторить. Для сотрудника, который загружает десятки карточек товаров, это полезно: изображения можно сложить в одну папку и обработать весь набор одной командой.
Для разовой задачи без терминала проще взять программу с графическим интерфейсом: Picosmos Tools, XnView, XnView MP, GIMP. Jpegoptim раскрывается именно там, где сжатие нужно повторять одинаковым способом.
Когда Jpegoptim не подходит
Jpegoptim не подходит для редактирования изображения: в нём нет кадрирования, цветокоррекции, удаления объектов, фильтров, слоёв, кистей, инструментов выделения, предпросмотра и истории действий. Это не недостаток реализации, а следствие формата программы. Она работает с готовым JPEG-файлом и меняет способ его хранения.
Программа не подходит для PNG-скриншотов, интерфейсных макетов, логотипов, схем и изображений с текстом, если исходный файл ещё можно хранить в PNG. JPEG плохо переносит резкие границы, плоские заливки и мелкий текст, поэтому принудительное сохранение таких материалов в JPG создаёт артефакты. Для этих задач лучше использовать PNG-оптимизаторы или редакторы, которые сохраняют изображение в подходящем формате.
Интерфейс Jpegoptim: что видит пользователь
У Jpegoptim нет главного окна, вкладок, кнопок, панели инструментов и меню настроек. Интерфейс программы — это командная строка. Пользователь вводит команду, параметры и имена файлов, а программа возвращает текстовый отчёт. Поэтому точные элементы интерфейса здесь выглядят не как кнопки Open или Save, а как параметры --help, --max, --size, --dest, --strip-all, --verbose, --totals.
Справка вызывается командой:
jpegoptim --helpВ справке перечислены доступные параметры, краткий синтаксис и назначение опций. На скриншоте ниже показан вывод справки в Linux-терминале: пользователь видит список основных режимов, включая альтернативную папку назначения, ограничение качества, тестовый запуск, сохранение timestamps, вывод итогов и удаление метаданных.
Обычная строка результата содержит имя файла, размеры изображения, глубину цвета, найденные маркеры, статус и изменение размера. Пример:
photo.jpg 3120x4208 24bit EXIF ICC JFIF [OK] 1248473 --> 319204 bytes (74.43%), optimized.Эта строка читается так:
| Фрагмент вывода | Что означает |
|---|---|
photo.jpg | обработанный файл |
3120x4208 | размеры изображения в пикселях |
24bit | глубина цвета |
EXIF ICC JFIF | найденные маркеры и профили |
[OK] | файл распознан и обработан |
1248473 --> 319204 bytes | исходный и итоговый размер |
(74.43%) | экономия относительно исходного файла |
optimized | файл был оптимизирован |
В режиме --verbose программа выводит больше служебных деталей. В режиме --quiet она работает тише и не перегружает терминал лишними строками. Для пакетной обработки удобен --totals: после обработки всех файлов Jpegoptim выводит общий итог. Для скриптов полезен --csv, потому что результат можно легче передавать в таблицу, лог или систему мониторинга.
Развёртывание и проверка запуска
Jpegoptim присутствует в пакетных системах популярных Unix-подобных платформ. В Debian пакет описывается как утилита для оптимизации JPEG, реализованная на C, с интерфейсом командной строки и назначением compressing. Homebrew содержит формулу jpegoptim с зависимостью от jpeg-turbo, а Cygwin предоставляет пакет для Windows-среды с зависимостью от cygwin и libjpeg8.
В Debian, Ubuntu и производных системах команда установки выглядит так:
sudo apt updatesudo apt install jpegoptimНа скриншоте показан этап установки через apt: терминал выводит список дополнительных пакетов, объём загрузки и вопрос подтверждения.

Для Fedora и RHEL-совместимых систем используется dnf:
sudo dnf install jpegoptimДля Arch Linux используется pacman:
sudo pacman -S jpegoptimДля macOS через Homebrew используется команда:
brew install jpegoptimПосле развёртывания проверяется доступность бинарного файла:
jpegoptim --versionЗатем проверяется справка:
jpegoptim --helpНа Windows Jpegoptim работает как консольная программа. Запуск выполняется через Command Prompt, PowerShell, Cygwin или другую среду, где доступен исполняемый файл. В Windows-скриншоте видно, что программа не открывает отдельное графическое окно: пользователь работает с выводом в Command Prompt, а справка показывает те же принципы — путь назначения, принудительную оптимизацию, максимальное качество, тестовый запуск, перезапись, сохранение времени файла и удаление маркеров.

Системные требования
Jpegoptim относится к лёгким консольным утилитам. Главная техническая зависимость — библиотека JPEG. Для сборки требуется Independent JPEG Group libjpeg версии 6b или новее; также используется совместимость с libjpeg-turbo и mozjpeg. Тестируемые платформы в проекте: Linux, MacOS и Windows. Для Windows отдельно отмечается необходимость setargv.obj при сборке, чтобы работало разворачивание масок файлов.
| Компонент | Требование или особенность |
|---|---|
| Тип программы | консольная утилита |
| Основной формат | JPEG/JFIF |
| Зависимость при сборке | libjpeg 6b или новее |
| Альтернативные JPEG-библиотеки | libjpeg-turbo, mozjpeg |
| Интерфейс | командная строка |
| Проверенные платформы | Linux, MacOS, Windows |
| Графическая оболочка | отсутствует |
| Язык вывода | английский |
| Работа без интернета | да, обработка выполняется локально |
| Пакетная обработка | через список файлов, маски, find, --files-from, --files-stdin |
| Ограничение по формату | не обрабатывает PNG, WebP, AVIF, GIF, TIFF, RAW |
Для практического использования системные требования зависят не столько от самой программы, сколько от объёма изображений. Один JPEG обрабатывается быстро даже на слабом компьютере. Большие каталоги фотографий требуют больше времени на чтение, запись и перекодирование. При использовании --workers= нагрузка распределяется между несколькими процессами, поэтому ограничением становится CPU, скорость диска и количество одновременно обрабатываемых файлов.
На сервере Jpegoptim удобно запускать без графической подсистемы. Это полезно для VPS, контейнеров, CI/CD и автоматических задач. На рабочем компьютере программа занимает место обычной небольшой утилиты и не требует полноценной установки редактора изображений.
Основные возможности Jpegoptim
Оптимизация JPEG без понижения качества
Базовый режим Jpegoptim выполняет lossless-оптимизацию JPEG за счёт оптимизации Huffman tables. В этом режиме программа не ставит новый уровень качества и не пытается сделать изображение визуально хуже ради размера. Команда выглядит так:

jpegoptim photo.jpgЭтот режим подходит для уже подготовленных JPEG-файлов, где нельзя менять качество изображения. Экономия зависит от того, насколько эффективно файл был сохранён до обработки. Изображение, уже оптимизированное хорошим энкодером, уменьшится слабо или не изменится. Файл, сохранённый редактором с лишними данными и неэффективным кодированием, может заметно уменьшиться.
Сжатие с ограничением качества через --max
Параметр -m или --max= задаёт максимальный фактор качества от 0 до 100. При его использовании Jpegoptim отключает режим оптимизации без потерь и может повторно сохранить изображение. Если исходный JPEG был сохранён с качеством выше заданного значения, программа снижает качество до указанного потолка. Если файл уже сохранён с более низким качеством, Jpegoptim применяет lossless-оптимизацию и не повышает качество обратно.
Пример:
jpegoptim --max=85 photo.jpgЗначение 85 часто используют для фотографий на сайте, потому что оно даёт заметное уменьшение размера при умеренном риске видимых артефактов. Для превью и небольших картинок используют более низкие значения. Для изображений, которые нужно сохранять с высоким качеством, выбирают значения ближе к 90–95.
Сжатие до заданного размера через --size
Параметр -S или --size= пытается оптимизировать файл до заданного размера. Размер задаётся в килобайтах или в процентах от исходного файла. Пример:
jpegoptim --size=100k photo.jpgjpegoptim --size=50% photo.jpgТакой режим нужен, когда внешняя система принимает файл только до определённого лимита. Jpegoptim подбирает компрессию под цель, но сама природа JPEG не гарантирует идеальный результат для каждого изображения. Детальная фотография с большим количеством мелких текстур хуже ужимается до малого размера, чем простая картинка с крупными областями похожих цветов.
Сохранение результата в отдельную папку
По умолчанию Jpegoptim изменяет исходные файлы, если результат получается меньше. Для безопасной обработки используется -d или --dest=:
mkdir -p optimizedjpegoptim --dest=optimized photo.jpgТакой режим оставляет исходник на месте и записывает оптимизированный файл в отдельную папку. Важная особенность: если файл не удалось уменьшить, Jpegoptim не создаёт копию в папке назначения. Это поведение защищает каталог результата от файлов, которые не получили выигрыша, но требует внимательности при сравнении количества исходных и итоговых файлов.
Удаление метаданных
Jpegoptim может удалять разные типы JPEG-маркеров. Полная очистка выполняется параметром:
jpegoptim --strip-all photo.jpgПри этом из итогового файла удаляются дополнительные маркеры, включая комментарии и распространённые блоки метаданных. Для более точной работы есть отдельные параметры:
jpegoptim --strip-exif photo.jpgjpegoptim --strip-icc photo.jpgjpegoptim --strip-xmp photo.jpgjpegoptim --strip-com photo.jpgjpegoptim --strip-iptc photo.jpgПо умолчанию Jpegoptim сохраняет распространённые маркеры: EXIF, IPTC, ICC, XMP и COM. JFIF и Adobe APP14 зависят от поведения libjpeg: JFIF регенерируется библиотекой, а Adobe marker может создаваться или опускаться в зависимости от цветового пространства и версии JPEG-библиотеки.
Сохранение нужных метаданных
Полная очистка не всегда правильна. ICC-профиль важен для корректной цветопередачи, EXIF может хранить дату съёмки, IPTC — авторские и редакционные данные, XMP — сведения из рабочих процессов Adobe и DAM-систем. Jpegoptim позволяет удалить почти всё, но оставить выбранные блоки:
jpegoptim --strip-all --keep-icc photo.jpgjpegoptim --strip-all --keep-exif --keep-iptc photo.jpgjpegoptim --strip-all --keep-xmp photo.jpgТакой подход удобен для публикации, где нужно убрать приватные данные, но сохранить профиль цвета или авторскую информацию.
Progressive JPEG
Параметр --all-progressive принудительно делает выходные файлы progressive JPEG:
jpegoptim --all-progressive photo.jpgProgressive JPEG загружается в несколько проходов: сначала появляется грубый вариант изображения, затем детализация улучшается. Для веб-страниц это может быть полезно, потому что пользователь раньше видит содержимое картинки при медленной сети. Обратный режим --all-normal переводит файлы в обычный непоследовательный JPEG. В новых ветках также доступен --auto-mode, который выбирает progressive или non-progressive в зависимости от меньшего итогового размера.
Работа со stdin/stdout
Jpegoptim поддерживает работу через стандартный ввод и стандартный вывод:
cat photo.jpg | jpegoptim --stdin > optimized.jpgjpegoptim --stdout photo.jpg > optimized.jpgТакой режим полезен в Unix-конвейерах, когда файл проходит через несколько инструментов. При использовании --stdin обрабатывается один входной JPEG, а другие файлы из командной строки игнорируются. Параметр --stdout отправляет результат в стандартный вывод, что удобно для скриптов, но требует аккуратности: бинарный JPEG нельзя выводить в обычный терминал без перенаправления в файл.
Списки файлов
Для большого каталога удобно передавать файлы через список:
jpegoptim --files-from=list.txtФайл list.txt должен содержать по одному имени файла в строке. Также можно читать список из стандартного ввода:
find images -type f -name "*.jpg" | jpegoptim --files-stdinЭто удобнее, чем передавать слишком длинный список файлов прямо в командную строку. Такой подход полезен для больших проектов, где количество изображений превышает лимиты оболочки.
Параллельная обработка
Параметр --workers= задаёт максимальное количество параллельных процессов:
jpegoptim --workers=4 --max=85 --strip-all images/*.jpgНа многоядерном процессоре это ускоряет обработку большого набора изображений. Значение выбирают с учётом CPU и диска: слишком большое число рабочих процессов может перегрузить накопитель и ухудшить общую скорость. Для SSD и локального каталога можно использовать больше процессов; для сетевого хранилища лучше ограничиться меньшим значением.
Как пользоваться Jpegoptim: практические команды
Проверка справки и версии
Начать работу лучше с проверки, что команда доступна в терминале:
jpegoptim --versionjpegoptim --help--version выводит версию программы, --help показывает справку по параметрам. В Jpegoptim справка важнее, чем в графических редакторах: она заменяет меню настроек и подсказывает точные названия опций.
Оптимизация одного файла
Базовая команда:
jpegoptim photo.jpgПрограмма оптимизирует файл на месте. Если итоговый размер меньше, исходник заменяется оптимизированной версией. Если уменьшения нет, файл пропускается. Для первого запуска безопаснее использовать --noaction:
jpegoptim --noaction photo.jpgПараметр --noaction не меняет файл, а только показывает, что произойдёт при реальной обработке. Это полезно перед запуском на папке с большим количеством фотографий.
Обработка всех JPG в папке
Для файлов с расширением .jpg в текущем каталоге:
jpegoptim *.jpgДля .jpeg:
jpegoptim *.jpegДля обоих расширений в дереве каталогов:
find images -type f \( -name "*.jpg" -o -name "*.jpeg" \) \ -exec jpegoptim {} +Команда find передаёт найденные файлы пакетами. Это быстрее, чем запускать отдельный процесс для каждого файла.
Сохранение результата отдельно
Безопасный вариант для первой обработки:
mkdir -p optimizedjpegoptim --dest=optimized *.jpgДля сжатия с качеством и очисткой метаданных:
mkdir -p optimizedjpegoptim --max=85 --strip-all --dest=optimized *.jpgТакой подход удобен для сравнения исходников и результата. После обработки можно проверить размеры:
ls -lh *.jpg optimized/*.jpgСжатие с ограничением качества
Для фотографий на сайте:
jpegoptim --max=85 --strip-all photo.jpgДля превью:
jpegoptim --max=75 --strip-all preview.jpgДля изображений, где нужно сохранить цветовой профиль:
jpegoptim --max=85 --strip-all --keep-icc photo.jpgПонижение качества нельзя отменить, если исходник был перезаписан. Поэтому для ценных фотографий используют --dest, резервную папку или систему контроля версий.
Сжатие до заданного размера
Для ограничения до 100 КБ:
jpegoptim --size=100k photo.jpgДля ограничения до 60% от исходного размера:
jpegoptim --size=60% photo.jpgДля тестового просмотра:
jpegoptim --noaction --size=100k photo.jpg--size полезен для внешних лимитов, но хуже подходит для единообразного качества на наборе изображений. Две разные фотографии могут получить разные уровни визуальных потерь, потому что программа подгоняет размер, а не одинаковое качество.
Удаление EXIF перед публикацией
Для очистки всех метаданных:
jpegoptim --strip-all photo.jpgДля удаления только EXIF:
jpegoptim --strip-exif photo.jpgДля удаления EXIF и XMP:
jpegoptim --strip-exif --strip-xmp photo.jpgЭтот сценарий нужен перед публикацией фотографий, где не должны оставаться геолокация, модель камеры, дата съёмки, параметры экспозиции или редакционные данные.
Сохранение ICC-профиля
Для сайта с фотографиями товаров, где важна цветопередача:

jpegoptim --max=85 --strip-all --keep-icc product.jpgТакой режим удаляет лишние данные, но оставляет профиль цвета. Для интернет-магазина это лучше, чем полная очистка без проверки, потому что неправильная цветопередача может исказить оттенки товара.
Создание progressive JPEG
Для одной фотографии:
jpegoptim --all-progressive photo.jpgДля всего каталога:
jpegoptim --all-progressive *.jpgДля принудительного преобразования используют вместе с --force, если нужно перевести файлы даже тогда, когда размер не уменьшается:
jpegoptim --force --all-progressive *.jpg--force применяют осознанно: он заставляет оптимизировать даже тогда, когда результат может оказаться больше исходника.
Итоговая статистика по папке
Для пакетной обработки с итогом:
jpegoptim --max=85 --strip-all --totals *.jpg--totals выводит общий результат после обработки всех файлов. Для больших каталогов это удобнее, чем вручную складывать экономию по каждой строке.
Параметры Jpegoptim в работе
| Параметр | Задача | Когда использовать | Что учитывать |
|---|---|---|---|
-h, --help | вывести справку | перед настройкой команды | справка заменяет меню программы |
-d, --dest= | сохранить результат в другую папку | при первом запуске, при обработке ценных файлов | неизменённые файлы не копируются в папку назначения |
-f, --force | принудить оптимизацию | при переводе baseline/progressive, специальных сценариях | результат может стать больше |
-m , --max= | ограничить качество | для сжатия фото на сайт | отключает режим без потерь |
-S , --size= | приблизить файл к размеру | для лимитов загрузки | отключает режим без потерь |
-n, --noaction | показать результат без записи | перед массовой обработкой | файл не изменяется |
-T, --threshold= | не менять файл при малом выигрыше | при осторожной оптимизации архива | значение задаётся в процентах |
-b, --csv | вывод CSV | для логов и таблиц | удобно для автоматизации |
-o, --overwrite | перезаписывать файл в папке назначения | вместе с --dest | без него уже существующий файл защищён |
-p, --preserve | сохранить timestamps | для CMS и синхронизации | не меняет время модификации |
-P, --preserve-perms | сохранить права через overwrite-режим | для системных каталогов | создаётся временная резервная копия .jpegoptim.bak |
-q, --quiet | тихий режим | для скриптов | меньше вывода в терминал |
-t, --totals | общий итог | для пачки файлов | полезно после *.jpg |
-v, --verbose | подробный режим | диагностика и обучение | вывод становится объёмнее |
-w , --workers= | параллельная обработка | большие каталоги | число процессов подбирают под CPU и диск |
--all-progressive | сделать progressive JPEG | веб-публикация | для принудительного преобразования применяют с --force |
--all-normal | сделать non-progressive JPEG | совместимость со старым конвейером | тоже может требовать --force |
--auto-mode | выбрать progressive/non-progressive по меньшему размеру | автоматическая оптимизация | сохраняет фокус на размере |
--stdout | отправить результат в stdout | конвейеры и скрипты | нужен вывод в файл или другой процесс |
--stdin | читать JPEG из stdin | Unix pipeline | обрабатывается один входной файл |
--files-from= | читать список файлов из файла | длинные списки | один путь в строке |
--files-stdin | читать список из stdin | связка с find | удобно для дерева каталогов |
--strip-all | удалить маркеры | публикация без лишних данных | можно сочетать с --keep-* |
--strip-exif | удалить EXIF | убрать данные камеры и геометки | не трогает другие блоки |
--strip-icc | удалить ICC | минимизация веса | может повлиять на цвет |
--strip-xmp | удалить XMP | очистка рабочих данных | важно для файлов из редакторов |
--strip-iptc | удалить IPTC/APP13 | убрать редакционные и авторские блоки | не применять без проверки в медиаархивах |
--keep-exif | оставить EXIF при --strip-all | архив, дата съёмки | приватные данные тоже сохраняются |
--keep-icc | оставить ICC при --strip-all | товарные фото, цвет | увеличивает файл, но сохраняет профиль |
--keep-xmp | оставить XMP | рабочие процессы Adobe/DAM | нужно не для всех сайтов |
--keep-iptc | оставить IPTC | редакционные фото | полезно для авторских данных |
Работа с метаданными JPEG
JPEG-файл содержит не только сжатые пиксели. Внутри могут находиться маркеры EXIF, IPTC, ICC, XMP, COM, JFIF, JFXX, Adobe APP14 и другие блоки. Jpegoptim умеет управлять этими маркерами, поэтому его часто используют не только как компрессор, но и как инструмент очистки изображения перед публикацией.
По умолчанию Jpegoptim сохраняет распространённые метаданные: EXIF, IPTC, ICC, XMP и COM. Это безопаснее для архива, потому что дата съёмки, цветовой профиль, комментарии и редакционные данные остаются в файле. Но для сайта такой подход не всегда оптимален: EXIF может содержать геолокацию, XMP — рабочую историю, ICC — дополнительный вес, COM — комментарии, которые не нужны пользователю страницы.
Когда использовать --strip-all
--strip-all подходит для публичных изображений, где не нужно сохранять служебные данные. Например, для иллюстраций в блоге, превью, карточек каталога и рекламных баннеров:
jpegoptim --strip-all image.jpgДля веб-разработчика это самый простой способ убрать лишние блоки. Но полная очистка не должна применяться автоматически к архивам фотографов, юридически значимым снимкам, медицинским изображениям, материалам с авторскими данными и товарным фото, где цветовой профиль влияет на восприятие оттенков.
Когда сохранять EXIF
EXIF сохраняют, когда важна дата съёмки, модель камеры, объектив, параметры экспозиции или координаты. Для личного архива и фотобанка это полезно. Для публичной страницы с частными фотографиями EXIF чаще удаляют, потому что геоданные и техническая информация могут раскрывать лишние сведения.
Команда для очистки всего, кроме EXIF:
jpegoptim --strip-all --keep-exif photo.jpgКогда сохранять ICC
ICC-профиль нужен для корректной интерпретации цветов. Если удалить профиль из изображения, созданного в специфическом цветовом пространстве, оттенки могут измениться при отображении. Для товарных фотографий, портфолио, полиграфической подготовки и визуально чувствительных материалов ICC лучше сохранить:
jpegoptim --strip-all --keep-icc product.jpgКогда сохранять IPTC и XMP
IPTC и XMP часто встречаются в редакционных и профессиональных процессах. Они могут хранить подписи, автора, права, категории, теги и данные из медиаменеджеров. Для публичной оптимизации обычных изображений эти блоки удаляют. Для редакционной базы и фототеки их оставляют:
jpegoptim --strip-all --keep-iptc --keep-xmp editorial.jpgКачество сжатия: lossless, lossy и реальные компромиссы
Jpegoptim важно оценивать не по принципу сжимает сильнее или слабее, а по выбранному режиму. Без --max и --size программа работает как оптимизатор JPEG-структуры. С параметрами качества или размера она становится инструментом повторного сжатия. Эти режимы решают разные задачи.
Lossless-оптимизация подходит для файлов, которые нельзя визуально ухудшать. Это изображения для архива, финальные материалы клиента, фотографии, где уже выбран нужный уровень качества, и файлы, которые проходят контроль перед публикацией. Команда:
jpegoptim photo.jpgВ этом режиме результат может быть умеренным. Файл уменьшается только за счёт более эффективного кодирования и очистки выбранных данных, если пользователь добавляет параметры strip. Ожидать уменьшения в несколько раз от каждого JPEG не нужно.
Lossy-сжатие подходит для web-версий. Команда:
jpegoptim --max=85 --strip-all photo.jpgСмысл --max=85 — ограничить качество сверху. Если исходный файл был сохранён с качеством выше 85, он будет перекодирован. Если исходный файл уже ниже этого порога, программа не станет повышать качество и раздувать файл.
Сжатие до размера решает другую задачу:
jpegoptim --size=100k photo.jpgЗдесь приоритет — размер файла. Визуальное качество подчиняется ограничению. Такой режим удобен для форм загрузки, но опасен для одинаковой обработки галереи: простая фотография может выглядеть нормально, а сложная с листвой, волосами, тканью или шумом получит заметные артефакты.
| Режим | Команда | Что меняется | Подходящий сценарий |
|---|---|---|---|
| Lossless-оптимизация | jpegoptim photo.jpg | оптимизируется кодирование | архив, осторожная обработка |
| Очистка метаданных | jpegoptim --strip-all photo.jpg | удаляются маркеры | публикация без лишних данных |
| Ограничение качества | jpegoptim --max=85 photo.jpg | качество ограничивается сверху | web-версии фотографий |
| Целевой размер | jpegoptim --size=100k photo.jpg | программа подгоняет файл под размер | лимиты загрузки |
| Progressive JPEG | jpegoptim --all-progressive photo.jpg | меняется способ загрузки JPEG | веб-страницы |
Пакетная обработка и автоматизация
Пакетное сжатие JPEG — одно из главных преимуществ Jpegoptim. Графический редактор удобен для одного файла, но становится медленным при сотнях изображений. Jpegoptim получает список файлов и обрабатывает их одинаковым способом, поэтому результат проще повторить.
Обработка каталога через маску
Самый простой вариант:
jpegoptim --max=85 --strip-all *.jpgКоманда берёт все .jpg в текущей папке. Для .jpeg нужно отдельное выражение:
jpegoptim --max=85 --strip-all *.jpegЕсли каталог содержит и .jpg, и .jpeg, удобнее использовать find:
find . -type f \( -name "*.jpg" -o -name "*.jpeg" \) \ -exec jpegoptim --max=85 --strip-all {} +Папка результата для безопасной обработки
Перед массовой обработкой лучше создать отдельную директорию:
mkdir -p optimizedjpegoptim --max=85 --strip-all --dest=optimized *.jpgДля дерева каталогов --dest требует продуманной структуры, потому что программа сохраняет файлы в указанную папку. Если нужно сохранить исходное дерево, обычно используют shell-скрипт, который создаёт такие же подпапки и передаёт файлы по одному.
Список файлов из текстового файла
Для выборочной обработки:
jpegoptim --files-from=images.txt --max=85 --strip-allСодержимое images.txt:
images/photo-01.jpgimages/photo-02.jpguploads/banner.jpgТакой метод удобен, когда список файлов формируется другой программой: CMS, системой проверки размера, скриптом поиска новых изображений или отчётом из git.
Чтение списка из stdin
Команда:
find uploads -type f -name "*.jpg" | jpegoptim --files-stdin --max=85 --strip-allfind находит файлы, а Jpegoptim читает их по одному имени в строке. Такой вариант подходит для автоматизации, где список создаётся динамически.
Параллельная обработка
Для ускорения:
jpegoptim --workers=4 --max=85 --strip-all *.jpgКоличество рабочих процессов подбирают по системе. Для четырёхъядерного компьютера значение 4 выглядит логичным стартом. Для сервера с большим количеством ядер можно увеличить параметр, но нужно следить за диском: JPEG-файлы читаются и записываются, поэтому медленный HDD или сетевой диск может стать узким местом.
Контроль результата
После обработки каталога полезно сравнить размеры:
du -sh imagesdu -sh optimizedДля контроля отдельных файлов:
ls -lh photo.jpg optimized/photo.jpgДля логов:
jpegoptim --csv --totals --max=85 --strip-all *.jpg > jpegoptim-report.csvCSV-вывод удобен, когда нужно передать результат в таблицу или сохранить отчёт по обработке.
Безопасный рабочий процесс
Jpegoptim по умолчанию изменяет исходные файлы, поэтому безопасный рабочий процесс строится вокруг копий. Это особенно важно при работе с фотографиями, которые нельзя повторно получить.
Рекомендуемый порядок:
Создать копию исходной папки.
Запустить
jpegoptim --noactionна нескольких файлах.Выбрать режим: lossless,
--max,--size,--strip-all.Для первой массовой обработки использовать
--dest.Сравнить размер и визуальное качество.
Проверить метаданные, если они важны.

Только после проверки заменять исходные файлы.
Пример безопасной команды:
mkdir -p optimizedjpegoptim --noaction --max=85 --strip-all *.jpgjpegoptim --max=85 --strip-all --dest=optimized *.jpgДля фотографий товаров перед заменой стоит открыть несколько файлов из optimized, проверить цвет и убедиться, что удаление ICC не исказило оттенки. Если цвет изменился, команда должна сохранять профиль:
jpegoptim --max=85 --strip-all --keep-icc --dest=optimized *.jpgДля архива семейных фотографий лучше не использовать --strip-all, если важны дата, геолокация и параметры съёмки. В этом случае безопаснее выполнить только базовую оптимизацию или оставить EXIF:
jpegoptim --strip-all --keep-exif --dest=optimized *.jpgПреимущества и ограничения
Плюсы
Jpegoptim выполняет конкретную задачу без лишнего интерфейса: оптимизирует и сжимает JPEG/JFIF.
Программа подходит для автоматизации, потому что управляется параметрами командной строки.
Есть режим без принудительного снижения качества через оптимизацию Huffman tables.
Есть lossy-режим через
--max=.Есть режим приближения к целевому размеру через
--size=.Поддерживается пакетная обработка файлов.
Есть управление метаданными:
--strip-all, отдельные--strip-*и--keep-*.Есть сохранение результата в отдельную папку через
--dest.Есть тестовый запуск без изменения файлов через
--noaction.Поддерживаются stdin/stdout, списки файлов и CSV-вывод.
Параллельная обработка через
--workersпомогает на больших наборах JPEG.Программа работает локально и не требует отправки фотографий в онлайн-сервис.
Исходный код открыт, а репозиторий использует GPL-3.0 license.
Минусы
Графического интерфейса нет: все действия выполняются через терминал.
По умолчанию программа изменяет исходные файлы, поэтому нужны копии или
--dest.Поддерживается именно JPEG/JFIF; для PNG, WebP, AVIF и других форматов нужны другие инструменты.
Режимы
--maxи--sizeмогут ухудшить изображение, потому что включают сжатие с потерями.Полная очистка
--strip-allможет удалить важные данные: EXIF, ICC, IPTC, XMP.Для визуальной оценки результата нужен внешний просмотрщик или редактор.
--forceможет создать файл больше исходного.При агрессивном целевом размере на сложных фотографиях появляются JPEG-артефакты.
Для Windows работа остаётся консольной, без привычных кнопок и окон.
Сравнение с аналогами
Jpegoptim корректно сравнивать не с фоторедакторами вообще, а с инструментами, которые решают близкую задачу: уменьшение веса изображений, оптимизация JPEG, обработка метаданных и автоматизация. У каждой альтернативы другой баланс между простотой, форматами, контролем качества и интерфейсом.
| Инструмент | Тип | Форматы | Сильная сторона | Ограничение относительно Jpegoptim |
|---|---|---|---|---|
| Jpegoptim | CLI-утилита | JPEG/JFIF | быстрая локальная оптимизация JPEG, --max, --size, --strip-*, --workers | нет GUI, нет других форматов |
| jpegtran | CLI-утилита | JPEG/JFIF | lossless-трансформации JPEG, progressive, rotate, optimize | не меняет качество как --max в Jpegoptim |
| MozJPEG | JPEG-энкодер и набор инструментов | JPEG | более эффективное JPEG-кодирование для web | сложнее для пользователя, шире задача кодирования |
| ImageOptim | GUI для macOS | несколько web-форматов | drag-and-drop, объединение нескольких оптимизаторов | только macOS-приложение для GUI-сценариев |
| TinyPNG / Tinify | онлайн-сервис и API | WebP, AVIF, JPEG, PNG, APNG, JXL | браузерная обработка и API | файлы загружаются во внешний сервис |
| OptiPNG | CLI-утилита | PNG, BMP, GIF, PNM, TIFF как входные форматы | lossless-оптимизация PNG | не оптимизирует JPEG |
| ImageMagick | CLI-набор | много форматов | изменение размера, конвертация, пакетные операции | шире и сложнее, опасен при in-place обработке через mogrify |
| FileOptimizer | Windows-программа | много форматов | универсальная lossless-оптимизация файлов | не такой простой CLI-инструмент для серверного JPEG-пайплайна |
| GIMP | графический редактор | много форматов | ручное редактирование и экспорт | не так удобен для чистой массовой JPEG-оптимизации |
Jpegoptim и jpegtran
jpegtran выполняет lossless-преобразования JPEG: перевод baseline в progressive, оптимизацию энтропийного кодирования, поворот, работу с DCT-коэффициентами без полного декодирования изображения. Он не предназначен для изменения качества изображения через параметр, аналогичный --max в Jpegoptim. Поэтому jpegtran выбирают для бездеградационных трансформаций, а Jpegoptim — когда нужны и lossless-оптимизация, и управляемое сжатие JPEG через качество или размер.
Jpegoptim и MozJPEG
MozJPEG — более глубокий инструмент для эффективного JPEG-кодирования. Он улучшает эффективность JPEG-компрессии и совместим со стандартными JPEG-декодерами. MozJPEG полезен, когда нужно получить наилучшее соотношение качества и размера при кодировании. Jpegoptim проще: он берёт существующие JPEG-файлы и оптимизирует их в командной строке. Для сайта с готовой папкой .jpg Jpegoptim быстрее внедрить; для собственной системы генерации изображений MozJPEG даёт больше контроля на уровне энкодера.
Jpegoptim и ImageOptim
ImageOptim — графическое приложение для macOS. Оно удаляет метаданные, сжимает изображения без видимой потери качества и объединяет несколько оптимизаторов, включая инструменты для JPEG и PNG. В интерфейсе используется drag-and-drop, поэтому ImageOptim удобнее для пользователя, которому не нужен терминал. Jpegoptim лучше подходит для Linux-сервера, скрипта, CI/CD и регулярной обработки каталога.
Для пользователя macOS с разовыми задачами ImageOptim проще. Для автоматической подготовки JPEG в проекте Jpegoptim прямее и прозрачнее, потому что каждая настройка задана параметром команды.
Jpegoptim и TinyPNG / Tinify
TinyPNG и Tinify работают как web-инструмент и API для оптимизации изображений. Они поддерживают современные web-форматы и браузерный сценарий drag-and-drop. TinyPNG использует lossy-компрессию для WebP, AVIF, JPEG и PNG, а также удаляет лишние метаданные. Бесплатный web-режим ограничен количеством файлов за раз и размером одного файла.
Jpegoptim отличается тем, что работает локально и не зависит от внешнего сервиса. Это важно для приватных фотографий, закрытых проектов, серверных каталогов и пакетной обработки без передачи файлов третьей стороне.
Jpegoptim и OptiPNG
OptiPNG решает другую задачу: он оптимизирует PNG. Сравнивать его с Jpegoptim напрямую нельзя как замену, потому что форматы разные. В реальном проекте они часто используются вместе:
find assets -type f -name "*.jpg" -exec jpegoptim --max=85 --strip-all {} +find assets -type f -name "*.png" -exec optipng -o5 {} +Jpegoptim берёт JPEG-фотографии, OptiPNG — PNG-иконки, скриншоты, схемы и интерфейсные изображения. Для смешанного каталога это не конкуренты, а пара инструментов.
Jpegoptim и ImageMagick
ImageMagick шире: он меняет размер, конвертирует форматы, применяет фильтры, работает с большим набором графических файлов. Для JPEG он может менять качество через convert или mogrify. Но ImageMagick — универсальный инструмент, а Jpegoptim — специализированный. Когда нужно только сжатие JPEG и очистка метаданных, команда Jpegoptim короче и понятнее.
ImageMagick полезен перед Jpegoptim, если нужно сначала уменьшить геометрию:
mogrify -resize 1600x1600\> *.jpgjpegoptim --max=85 --strip-all *.jpgТакой порядок логичен: сначала меняется размер изображения, затем оптимизируется итоговый JPEG.
Сценарии применения
Подготовка изображений для сайта
Для сайта важны три параметра: визуальное качество, размер файла и отсутствие лишних метаданных. Jpegoptim закрывает эти задачи одной командой:
jpegoptim --max=85 --strip-all --all-progressive *.jpgДля фотографий товаров с важной цветопередачей команда меняется:
jpegoptim --max=85 --strip-all --keep-icc --all-progressive *.jpgДля личного блога, где не нужны данные камеры, --strip-all убирает EXIF и другие блоки. Для профессионального портфолио можно оставить ICC, чтобы сохранить корректное отображение цвета.
Оптимизация фотоархива без изменения структуры
Для архива лучше начинать с lossless-режима:
jpegoptim --preserve *.jpg--preserve сохраняет дату изменения файла, а отсутствие --max и --size не включает принудительное сжатие с потерями. Если нужно удалить только комментарии, но сохранить EXIF:
jpegoptim --strip-com --preserve *.jpgАрхивные фотографии не стоит обрабатывать агрессивным --strip-all, если дата съёмки, координаты и параметры камеры важны.
Автоматическая обработка после экспорта
После экспорта из редактора изображения можно прогнать через Jpegoptim. Для папки export:
jpegoptim --max=88 --strip-all --keep-icc export/*.jpgТакой подход удобен для повторяемой публикации: дизайнер экспортирует файлы, скрипт приводит их к нужному размеру и удаляет лишние блоки. При одинаковой команде результат предсказуемее, чем при ручном сохранении каждого изображения.
Сжатие перед отправкой по почте
Если почтовый сервис ограничивает размер вложений, можно создать отдельную папку:

mkdir -p mailjpegoptim --max=80 --strip-all --dest=mail *.jpgИсходники остаются без изменений, а в папке mail лежат уменьшенные копии. Для ещё более строгого лимита:
jpegoptim --size=500k --strip-all --dest=mail *.jpgОчистка метаданных перед публикацией
Для публичной публикации фотографий:
jpegoptim --strip-all public/*.jpgДля публикации с сохранением авторских IPTC-данных:
jpegoptim --strip-all --keep-iptc public/*.jpgДля публикации с сохранением цветового профиля:
jpegoptim --strip-all --keep-icc public/*.jpgВыбор зависит от задачи. Для приватности удаляют больше. Для редакционной и коммерческой работы оставляют те данные, которые нужны в процессе.
Интеграция в сборку проекта
В web-проекте Jpegoptim можно запускать как шаг подготовки ассетов:
find public/images -type f \( -name "*.jpg" -o -name "*.jpeg" \) \ -exec jpegoptim --max=85 --strip-all --all-progressive {} +Для отчёта:
find public/images -type f \( -name "*.jpg" -o -name "*.jpeg" \) \ -print | jpegoptim --files-stdin --csv --totals --max=85 --strip-allДля CI/CD важно, чтобы команда завершалась предсказуемо и не требовала действий в интерфейсе. Jpegoptim подходит для такого режима лучше, чем графический редактор.
Ошибки и меры предосторожности
Запуск без резервной копии
Главная ошибка — запускать агрессивное сжатие по исходникам без копии:
jpegoptim --max=70 --strip-all *.jpgПосле такой команды файлы будут перезаписаны. Если качество оказалось слишком низким или были удалены важные метаданные, восстановить их из обработанного JPEG нельзя. Безопасный вариант:
mkdir -p optimizedjpegoptim --max=70 --strip-all --dest=optimized *.jpgСлучайное удаление EXIF и ICC
--strip-all удобен, но он не различает важные и неважные данные по смыслу. Для фотографа EXIF может быть частью архива. Для интернет-магазина ICC может влиять на цвет. Для редакции IPTC может хранить подпись, автора и права. Перед массовой очисткой нужно решить, какие маркеры сохранять.
Неверный выбор --max
Значение качества не является универсальным. Для больших фотографий на сайте 85 часто даёт хороший баланс, но для изображений с текстом, тонкими линиями, схемами и UI-элементами JPEG сам по себе не лучший формат. Если исходник — скриншот интерфейса, лучше вернуться к PNG и оптимизировать его другим инструментом.
Использование --force без причины
--force заставляет Jpegoptim выполнять оптимизацию даже тогда, когда результат может быть больше. Этот параметр нужен для специальных случаев, например принудительного изменения progressive/non-progressive режима. Для обычного уменьшения веса файлов --force не нужен.
Ожидание точного результата от --size
--size пытается приблизить файл к заданному размеру, но качество итогового изображения зависит от содержимого. На фотографии с большим количеством деталей целевой размер достигается более агрессивным снижением качества. Проверка результата обязательна, особенно при маленьких лимитах.
Отсутствие визуального контроля
Jpegoptim показывает байты, проценты и статус, но не показывает изображение. После изменения качества нужно открыть результат в просмотрщике и проверить:
лица и кожу;
плавные градиенты;
небо и фон;
текстуры ткани, волос, травы, листвы;
края объектов;
мелкий текст;
цвет, если удалялся ICC-профиль.
Для просмотра и ручной проверки можно использовать FastStone Image Viewer, IrfanView, XnView MP или другой просмотрщик.
Отзывы пользователей и профильных изданий
Jpegoptim регулярно встречается в Linux-материалах о сжатии изображений из терминала. TecMint рассматривает Jpegoptim вместе с OptiPNG как пару командных инструментов для оптимизации JPEG и PNG, подчёркивая работу с JPEG, JPG и JFIF и поддержку lossless-оптимизации через Huffman tables. OMG! Ubuntu описывает Jpegoptim как командный способ быстро сжимать JPEG в Linux и отдельно упоминает Trimage как графическую оболочку, которая использует Jpegoptim и pngcrush. DigitalOcean включает Jpegoptim в набор Linux-инструментов для уменьшения размера изображений наряду с ImageMagick, pngcrush, OptiPNG, WebP и GIMP.
В Linux Mint Community у страницы jpegoptim показаны оценки и отзывы, а видимые короткие отзывы сводятся к практической пользе и простоте оптимизации JPEG-файлов. Там же программа описывается как утилита для lossless- и lossy-оптимизации JPEG через Huffman tables и пользовательский фактор качества.
Усреднённое восприятие Jpegoptim в профильных материалах складывается вокруг нескольких идей:
программу ценят за простоту команды;
её выбирают для серверной и пакетной обработки;
сильная сторона — отсутствие загрузки файлов в браузерный сервис;
главная сложность для новичков — консольный интерфейс;
главный риск — перезапись исходников без
--dest;отдельное внимание уделяется метаданным, потому что
--strip-allодновременно уменьшает файл и меняет состав служебных данных.
Softpedia описывает Windows-сборку как command line utility для оптимизации JPEG и подчёркивает запуск через Windows Command Prompt. Это совпадает с общей природой Jpegoptim: программа не пытается быть визуальным редактором, а остаётся компактным CLI-инструментом для конкретной операции.
Безопасность, приватность и лицензия
Jpegoptim работает локально. Пользователь передаёт файлы программе в своей системе, а не загружает их на внешний сервер. Для приватных фотографий, закрытых каталогов, клиентских материалов и корпоративных изображений это важное отличие от онлайн-сервисов. При правильной настройке команда может выполняться на локальном компьютере, сервере, в контейнере или внутреннем пайплайне.
Приватность зависит от выбранных параметров. Если нужно удалить данные камеры, геолокацию и редакционные блоки, используется --strip-all или отдельные --strip-*. Если нужно сохранить часть данных, используются --keep-*. Jpegoptim даёт технический контроль, но не принимает решение за пользователя: ответственность за удаление или сохранение EXIF, ICC, IPTC и XMP остаётся на том, кто задаёт команду.
Исходный код Jpegoptim открыт, а репозиторий проекта содержит GPL-3.0 license. Homebrew также указывает GPL-3.0-or-later для формулы jpegoptim. Это важно для организаций, где перед внедрением инструмента проверяют лицензию и состав зависимостей.
Частые вопросы
Есть ли у Jpegoptim графический интерфейс?
Нет. Jpegoptim — консольная программа. У неё нет окна, кнопок, меню и предпросмотра. Работа выполняется через команду jpegoptim, параметры и список файлов. Для графического сценария лучше выбрать ImageOptim на macOS, XnView MP, Converseen, GIMP или другой редактор.
Можно ли сжимать PNG?
Нет. Jpegoptim работает с JPEG/JFIF. Для PNG используют OptiPNG, pngcrush, pngquant или графические программы, которые поддерживают PNG-экспорт. В смешанном каталоге JPEG и PNG обрабатывают разными инструментами.
Удаляет ли Jpegoptim EXIF?
По умолчанию Jpegoptim сохраняет EXIF среди распространённых маркеров. Для удаления EXIF используется --strip-exif, для полной очистки — --strip-all. Если нужно удалить всё, кроме EXIF, применяется --strip-all --keep-exif.
Как не перезаписать оригиналы?
Используется --dest=:
mkdir -p optimizedjpegoptim --dest=optimized photo.jpgДля пакетной обработки:
mkdir -p optimizedjpegoptim --max=85 --strip-all --dest=optimized *.jpgИсходные файлы остаются в текущей папке, а оптимизированные версии записываются в папку назначения.
Чем --max отличается от --size?
--max= задаёт верхний предел качества. Программа снижает качество только у файлов, сохранённых выше этого уровня. --size= пытается приблизить файл к заданному размеру в килобайтах или процентах. Первый режим лучше для единообразной web-обработки, второй — для жёстких лимитов загрузки.
Что делает --noaction?
--noaction показывает результат без изменения файла:
jpegoptim --noaction --max=85 photo.jpgЭто безопасный способ проверить, что произойдёт при реальном запуске.
Что делает --threshold?
--threshold= оставляет файл без изменений, если выигрыш меньше заданного процента. Например, при --threshold=1 Jpegoptim не будет менять файл ради слишком маленькой экономии. Это полезно для архивов и каталогов, где не хочется перезаписывать изображения из-за минимального результата.
Что выбрать: --strip-all или отдельные --strip-*?
--strip-all подходит для публичных web-копий, где не нужны метаданные. Отдельные --strip-* используют, когда нужно удалить конкретные блоки. Для товарных фото часто сохраняют ICC, для редакционных — IPTC, для архивов — EXIF.
Можно ли использовать Jpegoptim в скриптах?
Да. Программа поддерживает стандартные CLI-сценарии: маски файлов, find, stdin/stdout, списки файлов, CSV-вывод, итоговую статистику и параллельную обработку. Это одна из главных причин выбирать Jpegoptim вместо графического редактора для регулярной оптимизации JPEG.
Итог: кому стоит использовать Jpegoptim
Jpegoptim стоит выбирать, когда задача сформулирована конкретно: уменьшить размер JPEG/JFIF, очистить метаданные, перевести файлы в progressive JPEG, обработать папку через терминал или встроить оптимизацию изображений в скрипт. Программа особенно уместна на Linux-сервере, в web-проекте, в рабочем каталоге разработчика и в автоматическом пайплайне подготовки ассетов.
Для разовой визуальной обработки удобнее графический инструмент. Для PNG нужен отдельный оптимизатор. Для конвертации в WebP или AVIF нужен другой кодек. Для полноценной ретуши нужен редактор вроде GIMP. Но для повторяемого сжатия JPG без лишнего интерфейса Jpegoptim остаётся точным и практичным инструментом: команда задаёт режим, параметры фиксируют компромисс, а результат легко проверить по размеру, логам и итоговому файлу.
Список изменений
История версий Jpegoptim:
- История Jpegoptim показывает, что программа развивалась не как визуальный редактор, а как техническая утилита для всё более точного управления JPEG-оптимизацией, метаданными, потоками ввода-вывода и пакетной обработкой.
- Первые публичные выпуски сформировали базовую идею: консольная программа получает JPEG-файл и уменьшает его размер. В версии v1.0 появился первый публичный релиз. В v1.1 добавили параметр -f и улучшили поддержку других платформ. В v1.2.0 появились --overwrite и --preserve , а также поддержка GNU autoconf, что упростило сборку в Unix-средах.
- Линейка v1.2.x развивала контроль над метаданными и безопасностью временных файлов. В v1.2.2 EXIF и COM перестали удаляться автоматически, а пользователь получил параметры --strip-all , --strip-exif и --strip-com . В v1.2.3 появилась поддержка IPTC и ICC. В v1.2.4 добавили --threshold , а в v1.2.5 улучшили работу с временными файлами.
- Версия v1.3.0 стала важной для web-сценариев: появилась поддержка progressive JPEG через --all-progressive , обратный режим --all-normal , а также параметр --size для подгонки файла к заданному размеру. В v1.3.1 добавили XMP и CSV-вывод. В v1.3.2 улучшили обработку progressive JPEG и исправили связанные ошибки.
- Линейка v1.4.x усилила программу как инструмент для автоматизации. В v1.4.0 добавили работу со stdin/stdout и обработку изображения в памяти. В v1.4.4 появились дополнительные параметры для сохранения и удаления метаданных, включая XMP и ICC. В v1.4.7 добавили --nofix , поддержку JFIF Extension markers, nanosecond timestamps и новые --keep-* параметры для сочетания с --strip-all .
- Ветка v1.5.x сделала Jpegoptim удобнее для больших наборов файлов. В v1.5.0 появился параметр --workers= для параллельной обработки. В v1.5.2 добавили чтение списка файлов через --files-from и --files-stdin . В v1.5.5 улучшили работу с JFIF и добавили --keep-jfif и --strip-jfif . В v1.5.6 появились --retry , --save-extra и --auto-mode , а обработка изображения из stdin стала вести себя так же, как обработка файла. В v1.5.7 исправлено зацикливание --auto-mode в отдельных ситуациях.


Оставте свой отзыв о Jpegoptim